﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Oya.Entities
{
    /// <summary>
    /// Represente les caracteristiques actuelle du monstre.
    /// </summary><remarks>derive de la classe <see cref="MonstreCaracteristiquesModel"/> et y ajoute la fonction de mise a jour du calcul</remarks>
    public class MonstreCaracteristiquesActuelle : MonstreCaracteristiquesModel
    {
        //ref au car de base
        internal MonstreCaracteristiquesModel Base;
        //ref a la progression 
        internal MonstreCaracteristiquesModel Prog;

        public MonstreCaracteristiquesActuelle()
        {
            Base = new MonstreCaracteristiquesModel();
            Prog = new MonstreCaracteristiquesModel();
        }
        public MonstreCaracteristiquesActuelle(MonstreCaracteristiquesModel baseCaracteristique, MonstreCaracteristiquesModel progression): this()
        {
            this.Base = baseCaracteristique;
            this.Prog = progression;
        }

        /// <summary>
        /// Mettrait a jour la caracteristique actuelle
        /// TODO What I want is to return the actual Caracteristic...
        /// </summary>
        /// <param name="baseCaracteristique"></param>
        /// <param name="progression"></param>
        /// <returns></returns>
        public void UpdateActualCaracteristiques(MonstreCaracteristiquesModel baseCaracteristique, MonstreCaracteristiquesModel progression, int niveauXP)
        {
            this.Attaque = Base.Attaque + Prog.Attaque * niveauXP;
            this.Defense  = Base.Defense + Prog.Defense * niveauXP;
            this.PEnergie = Base.PEnergie + Prog.PEnergie * niveauXP;
            this.PVie = Base.PVie + Prog.PVie * niveauXP;
            this.RegenPEnergie = Base.RegenPEnergie + Prog.RegenPEnergie * niveauXP;
            this.Volonte = Base.Volonte + Prog.Volonte * niveauXP;

        }
    }
}